# 内置容器 可包含其它的对象

# 字典 是 容器 大括号 键值对出现 冒号隔开
dict1 = {'name': 'xiaoming', 'age': 34, 'sex': 'man'}
dict2 = {}  # 空字典
dict3 = dict([('name', 'zs'), ('age', 44)])
dict4 = dict(name='ll', age=54, city='bj')

# 新增和修改
# dict1['address'] = 'shanghai'
# dict1['age'] = 23
# print(dict1)

# 删除
# dict1.clear()
# dict1.pop('age')
# del dict1['sex']
# print(dict1)

# 查询
# if 'sex' in dict1:
#     print(dict1['sex'])
# new_dict = dict.fromkeys(['name','age'])
# new_dict['name'] = 'lisi'
# print(new_dict)
# print(dict1.get('name'))

# 字典的遍历
# items 把所有的项放到一个列表中
# for k,v in dict1.items():
#     print(f'key={k},value={v}')

# 遍历所有的键
# for k in dict1.keys():
#     print(k)
# # 遍历所有的value
# for v in dict1.values():
#     print(v)

# Set集合 由一系列的不可变类型变量组成的可变散列容器 相当于只有键没有值的字典
# 集合中不会出现重复的数据，出现了会自动去掉；集合数据是无序的，不支持下标查询
# set1 = set()
# set2 = {'sasasa',23,100,34}
# print(len(set2))
# set2.add(99)
# set2.add('world')
# print(set2)
# # 删除
# set2.remove(99)
# print(set2)

# for 循环遍历
# set3 = {'hello',100,200}

# 总结
# 可变：List、dict、set
# 不可变：Tuple

# 检查可变不可变

s1 = 'hereuryeryeu'
print(id(s1)) # 打印出内存地址
s1 = 'wewewewe'
print(id(s1)) # 内存地址 不同 表示是不可变的
print('-'*60)
list = [100,200,300]
print(id(list))
list.pop()
print(id(list)) #内存地址相同 表示 可变的类型

